package gest;

import java.rmi.RemoteException;
import java.util.Date;
import java.util.HashMap;

public class Gestao_Impl implements Gestao {
	private HashMap<Integer, Medico> medicos;
	private HashMap<Integer, Farmacia> farmacias;
	private HashMap<Integer, Utente> utente;
	private HashMap<String, Medicamento> medicamento;
	private HashMap<Integer, Receitas> receitas;
	private HashMap<String, Especialidade> especialidade;
	

	public Gestao_Impl() {
		medicos = new HashMap<Integer, Medico>();
		farmacias = new HashMap<Integer, Farmacia>();
		utente = new HashMap<Integer, Utente>();
		medicamento = new HashMap<String, Medicamento>();
		receitas = new HashMap<Integer, Receitas>();
		especialidade = new HashMap<String, Especialidade>();
	}

	public Medico cria_medico(int nlicenca) throws RemoteException {
		if (medicos.containsKey(Integer.valueOf(nlicenca))) {
			return medicos.get(Integer.valueOf(nlicenca));
		} else {
			Medico m = new Medico_Impl(nlicenca);
			medicos.put(Integer.valueOf(nlicenca), m);
			return m;
		}
	}

	public Farmacia cria_farmacia(int nlicenca) throws RemoteException {
		if (farmacias.containsKey(Integer.valueOf(nlicenca))) {
			return farmacias.get(Integer.valueOf(nlicenca));
		} else {
			Farmacia f = new Farmacia_Impl(nlicenca);
			farmacias.put(Integer.valueOf(nlicenca), f);
			return f;
		}
	}

	public Utente cria_utente(int nu) throws RemoteException{
		if(utente.containsKey(Integer.valueOf(nu))){
			return utente.get(Integer.valueOf(nu));
		}else{
			Utente ut = new Utente_Impl(nu);
			utente.put(Integer.valueOf(nu), ut);
			return ut;
		}
	}
	
	public Medicamento cria_medicamento(String nome) throws RemoteException{
		if(medicamento.containsKey(String.valueOf(nome))){
			return medicamento.get(String.valueOf(nome));
		}else{
			Medicamento medi = new Medicamento_Impl(nome);
			medicamento.put(String.valueOf(nome), medi);
			return medi;
		}
	}
	
	public Receitas cria_receitas(int codvi) throws RemoteException{
		if(receitas.containsKey(Integer.valueOf(codvi))){
			return receitas.get(Integer.valueOf(codvi));
		}else{
			Receitas rec = new Receitas_Impl(codvi);
			receitas.put(Integer.valueOf(codvi), rec);
			return rec;
		}
	}

	public Especialidade cria_especialidade(String esp) throws RemoteException {
		if(especialidade.containsKey(String.valueOf(esp))){
			return especialidade.get(String.valueOf(esp));
		}else{
			Especialidade es = new Especialidade_Impl(esp);
			especialidade.put(String.valueOf(esp), es);
			return es;
		}
	}

}
